/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package vn.com.pps.services;

import java.util.ArrayList;
import vn.com.pps.entities.Course;
import vn.com.pps.entities.CoursePupil;
import vn.com.pps.entities.CoursePupilDetail;
import vn.com.pps.entities.CoursePupilFee;
import vn.com.pps.entities.CourseTeacherAttendance;
import vn.com.pps.entities.CourseTeacherDetail;
import vn.com.pps.entities.CreditMemo;
import vn.com.pps.web.ui.CoursePupilFeeTableItem;
import vn.com.pps.web.ui.CoursePupilTableItem;
import vn.com.pps.web.ui.CourseTableItem;
import vn.com.pps.web.ui.CourseTeacherTableItem;
import vn.com.pps.web.ui.CreditMemoTableItem;
import vn.com.pps.web.ui.TeacherAttendanceTableItem;

/**
 *
 * @author Dai
 */
public interface ICourseService {

    public int countCourse(String whereClause);

    public ArrayList<CourseTableItem> getCourses(int pageNo, int pageSize, String whereClause);

    public ArrayList<CoursePupilTableItem> getPupilByCourse(int pageNo, int pageSize, Integer courseID);

    public int countPupilByCourse(Integer courseID);

    public Course getCourse(Integer id);

    public CourseTeacherDetail getTeacherByCourse(Integer courseID);

    public ArrayList<CreditMemoTableItem> getCreditMemosByCourse(int pageNo, int pageSize, Integer courseID);

    public ArrayList<TeacherAttendanceTableItem> getTakenRecordsByCourse(int pageNo, int pageSize, Integer courseID);

    public int getTakenRecordCount(int courseID);

    public int getCreditMemoCountByCourseID(int courseID);

    public int saveCreditMemo(CreditMemo creditMemo);

    public CoursePupilDetail getCoursePupilDetail(Integer id);

    public ArrayList<CoursePupilFeeTableItem> getCourseFees(int courseID, int pupilID);

    public int update(CoursePupilFee courseFee);

    public ArrayList<CourseTeacherTableItem> getTeacherByCourse(int pageNo, int pageSize, Integer TeacherID);

    public ArrayList<CourseTeacherTableItem> getCoursesByTeacher(int pageNo, int pageSize, Integer TeacherID);

    public int getCountCoursesByTeacher(Integer teacherID);

    public int getCountCoursesByPupil(Integer PupilID);

    public ArrayList<CoursePupilTableItem> getCoursesByPupil(int pageNo, int pageSize, Integer PupilID);

    public int saveTeacherAttendance(CourseTeacherAttendance courseTeacherAttendance);

    public int editTeacherAttendance(CourseTeacherAttendance courseTeacherAttendance);

    public CourseTeacherAttendance getTeacherAttendanceByID(int id);

    public int deleteteacherAttendance(int id);

    public int editCourseCreditMemo(CreditMemo creditMemo);

    public int deleteCourseCreditMemo(int id);

    public CreditMemo getCreditMemo(int id);

    public int editChangeCourse(CoursePupil coursePupil, int toCourseID);

    public int saveCourse(Course course);
    
    public int editCourse(Course course);
}
